@@ -10,18 +10,22 @@ |
||
10 | 10 |
angular.module('codexApp.noteEdit', []) |
11 | 11 |
.controller('NoteEditCtrl',['$scope', '$rootScope', '$state', 'FileService', function ($scope, $rootScope, $state, FileService) { |
12 | 12 |
|
13 |
- console.log('-> Note Editor opened!') |
|
13 |
+ |
|
14 | 14 |
|
15 | 15 |
$scope.note = FileService.getCurrentNote(); |
16 | 16 |
$scope.container = "note-container"; |
17 |
- $scope.raw_data = ""; |
|
17 |
+ $scope.raw_data = $scope.note.data; |
|
18 | 18 |
$scope.savedBeforeQuit = false; |
19 |
+ console.log('-> Editing File: ' + $scope.note.path) |
|
19 | 20 |
|
20 | 21 |
$rootScope.$on('window-view:change', function() { |
21 |
- if($scope.savedBeforeQuit == false) { |
|
22 |
- $scope.savedBeforeQuit = true; |
|
23 |
- FileService.saveFile($scope.note.path, $scope.raw_data) |
|
22 |
+ if($scope.raw_data != "" && $scope.raw_data != undefined) { |
|
23 |
+ if($scope.savedBeforeQuit == false) { |
|
24 |
+ $scope.savedBeforeQuit = true; |
|
25 |
+ FileService.saveFile($scope.note.path, $scope.raw_data) |
|
26 |
+ } |
|
24 | 27 |
} |
28 |
+ |
|
25 | 29 |
}); |
26 | 30 |
|
27 | 31 |
$scope.aceLoaded = function(_editor) { |
@@ -20,35 +20,65 @@ angular.module('codexApp.noteView', []) |
||
20 | 20 |
$scope.raw_data = ""; |
21 | 21 |
|
22 | 22 |
|
23 |
- filesystem.readFile($scope.note.path, function(err, data) { |
|
24 |
- var str = String.fromCharCode.apply(null, data) |
|
25 |
- if(!$scope.$$phase) { |
|
26 |
- $scope.$apply(function(){ |
|
27 |
- $scope.note.data = str; |
|
28 |
- $scope.raw_data = str |
|
29 |
- }); |
|
30 |
- } else { |
|
31 |
- $scope.note.data = str; |
|
32 |
- $scope.raw_data = str; |
|
33 |
- } |
|
34 |
- //console.log($scope.raw_data); |
|
35 |
- var a = document.getElementsByTagName('a'), ajax; |
|
36 |
- for (var i=0; i<a.length; ++i) { |
|
37 |
- a[i].addEventListener('click', handleAnchor, false); |
|
38 |
- } |
|
39 |
- function handleAnchor(e){ |
|
40 |
- e.preventDefault(); |
|
41 |
- if(ajax) ajax.abort(); |
|
42 |
- ajax = new XMLHttpRequest(); |
|
43 |
- ajax.onload = updateContent; |
|
44 |
- ajax.open("get", this.href, true); |
|
45 |
- ajax.send(); |
|
46 |
- console.log("-> Prevented link from opening: " + e.srcElement.href); |
|
47 |
- } |
|
48 |
- function updateContent() { |
|
49 |
- // Do something with `this.responseText` |
|
50 |
- } |
|
51 |
- }); |
|
23 |
+ $scope.loadNoteView = function() { |
|
24 |
+ filesystem.readFile($scope.note.path, function(err, data) { |
|
25 |
+ var str = String.fromCharCode.apply(null, data) |
|
26 |
+ if(!$scope.$$phase) { |
|
27 |
+ $scope.$apply(function(){ |
|
28 |
+ $scope.note.data = str; |
|
29 |
+ $scope.raw_data = str |
|
30 |
+ }); |
|
31 |
+ } else { |
|
32 |
+ $scope.note.data = str; |
|
33 |
+ $scope.raw_data = str; |
|
34 |
+ } |
|
35 |
+ //console.log($scope.raw_data); |
|
36 |
+ var a = document.getElementsByTagName('a'), ajax; |
|
37 |
+ for (var i=0; i<a.length; ++i) { |
|
38 |
+ a[i].addEventListener('click', handleAnchor, false); |
|
39 |
+ } |
|
40 |
+ function handleAnchor(e){ |
|
41 |
+ e.preventDefault(); |
|
42 |
+ var r = new RegExp('^(?:[a-z]+:)?//', 'i'); |
|
43 |
+ if(e.srcElement.protocol == "http:"){ |
|
44 |
+ console.log("-> Prevented link from opening: " + e.srcElement.outerHTML.match(/href="([^"]*)/)[1]); |
|
45 |
+ } |
|
46 |
+ if(e.srcElement.protocol == "file:"){ |
|
47 |
+ var current_note = FileService.getCurrentNote().path; |
|
48 |
+ var current_path = current_note.split('/'); |
|
49 |
+ current_path.pop(); |
|
50 |
+ var relative_path = e.srcElement.outerHTML.match(/href="([^"]*)/)[1]; |
|
51 |
+ relative_path = relative_path.split('/'); |
|
52 |
+ var count = 0; |
|
53 |
+ for (var i = 0; i < relative_path.length; i++) { |
|
54 |
+ if(relative_path[i] == ".."){ |
|
55 |
+ count = count + 1; |
|
56 |
+ relative_path[i] = ""; |
|
57 |
+ } |
|
58 |
+ } |
|
59 |
+ relative_path = relative_path.join('/'); |
|
60 |
+ for (var i = 0; i < count; i++) { |
|
61 |
+ current_path.pop(); |
|
62 |
+ } |
|
63 |
+ current_path = current_path.join('/'); |
|
64 |
+ current_path = current_path + relative_path |
|
65 |
+ |
|
66 |
+ var note = FileService.getNote(current_path); |
|
67 |
+ FileService.setCurrentNote(note); |
|
68 |
+ $scope.note = note; |
|
69 |
+ console.log("-> Opening Link: " + note.path) |
|
70 |
+ $scope.loadNoteView() |
|
71 |
+ } |
|
72 |
+ |
|
73 |
+ |
|
74 |
+ } |
|
75 |
+ function updateContent() { |
|
76 |
+ // Do something with `this.responseText` |
|
77 |
+ } |
|
78 |
+ }); |
|
79 |
+ } |
|
80 |
+ |
|
81 |
+ $scope.loadNoteView(); |
|
52 | 82 |
|
53 | 83 |
$scope.marked = function(str) { |
54 | 84 |
if(str != "" && str != undefined) { |
@@ -207,6 +207,10 @@ angular.module('codexApp') |
||
207 | 207 |
//console.log("Current_note: " + current_note.title) |
208 | 208 |
} |
209 | 209 |
|
210 |
+ this.getNotesDir = function() { |
|
211 |
+ return notes_dir; |
|
212 |
+ } |
|
213 |
+ |
|
210 | 214 |
this.getDefaultNotesDir = function() { |
211 | 215 |
return default_notes_dir; |
212 | 216 |
} |
@@ -5,4 +5,4 @@ Testing the codex app note structure. |
||
5 | 5 |
## Some Links |
6 | 6 |
|
7 | 7 |
* [External Link](http://blog.j1x.co) |
8 |
-* [Another note](Test-0002/index.md) |
|
8 |
+* [Another note](../Test-0002/index.md) |
@@ -0,0 +1,10 @@ |
||
1 |
+# JS absolute or relative URL |
|
2 |
+ |
|
3 |
+ var r = new RegExp('^(?:[a-z]+:)?//', 'i'); |
|
4 |
+ r.test('http://example.com'); // true - regular http absolute URL |
|
5 |
+ r.test('HTTP://EXAMPLE.COM'); // true - HTTP upper-case absolute URL |
|
6 |
+ r.test('https://www.exmaple.com'); // true - secure http absolute URL |
|
7 |
+ r.test('ftp://example.com/file.txt'); // true - file transfer absolute URL |
|
8 |
+ r.test('//cdn.example.com/lib.js'); // true - protocol-relative absolute URL |
|
9 |
+ r.test('/myfolder/test.txt'); // false - relative URL |
|
10 |
+ r.test('test'); // false - also relative URL |
@@ -0,0 +1,21 @@ |
||
1 |
+# Markdown Syntax |
|
2 |
+ |
|
3 |
+This is a quick review of the markdown syntax. |
|
4 |
+ |
|
5 |
+## titles |
|
6 |
+ |
|
7 |
+ # H1 |
|
8 |
+ ## H2 |
|
9 |
+ ### H3 |
|
10 |
+ #### H4 |
|
11 |
+ ##### H5 |
|
12 |
+ |
|
13 |
+## Lists |
|
14 |
+ |
|
15 |
+ * Unordered list item 1 |
|
16 |
+ * Unordered list item 2 |
|
17 |
+ * Unordered list item 3 |
|
18 |
+ |
|
19 |
+ 1. Ordered list item |
|
20 |
+ 2. Ordered list item |
|
21 |
+ 3. Ordered list item |